package com.czh.gzskzn.shenke3;

import android.app.Activity;
import android.app.FragmentManager;
import android.app.FragmentTransaction;
import android.graphics.Color;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.view.Window;
import android.widget.ImageView;
import android.widget.TextView;

public class HomActivity extends Activity implements View.OnClickListener {

    /**
     * 用于展示消息的Fragment
     */
    private ShoYeFrag shoYeFragFragment;

    /**
     * 用于展示联系人的Fragment
     */
    private WaiMaiFrag waiMaiFragFragment;

    /**
     * 用于展示动态的Fragment
     */
    private YuDingFrag yuDingFragsFragment;

    /**
     * 用于展示设置的Fragment
     */
    private WoDeFrag woDeFragFragment;

    /**
     * 消息界面布局
     */
    private View messageLayout;

    /**
     * 联系人界面布局
     */
    private View contactsLayout;

    /**
     * 动态界面布局
     */
    private View newsLayout;

    /**
     * 设置界面布局
     */
    private View settingLayout;

    /**
     * 在Tab布局上显示消息图标的控件
     */
    private ImageView messageImage;

    /**
     * 在Tab布局上显示联系人图标的控件
     */
    private ImageView contactsImage;

    /**
     * 在Tab布局上显示动态图标的控件
     */
    private ImageView newsImage;

    /**
     * 在Tab布局上显示设置图标的控件
     */
    private ImageView settingImage;

    /**
     * 在Tab布局上显示首页标题的控件
     */
    private TextView messageText;

    /**
     * 在Tab布局上显示外卖标题的控件
     */
    private TextView contactsText;

    /**
     * 在Tab布局上显示预订标题的控件
     */
    private TextView newsText;

    /**
     * 在Tab布局上显示我的标题的控件
     */
    private TextView settingText;

    /**
     * 用于对Fragment进行管理
     */
    private FragmentManager fragmentManager;
    static String TAG = "TAG";



    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        requestWindowFeature(Window.FEATURE_NO_TITLE);
        setContentView(R.layout.activity_hom);
        // 初始化布局元素
        initViews();
        fragmentManager = getFragmentManager();
        // 第一次启动时选中第0个tab
        setTabSelection(0);
    }

    /**
     * 在这里获取到每个需要用到的控件的实例，并给它们设置好必要的点击事件。
     */
    private void initViews() {
        messageLayout = findViewById(R.id.message_layout);
        contactsLayout = findViewById(R.id.contacts_layout);
        newsLayout = findViewById(R.id.news_layout);
        settingLayout = findViewById(R.id.setting_layout);
        messageImage = (ImageView) findViewById(R.id.message_image);
        contactsImage = (ImageView) findViewById(R.id.contacts_image);
        newsImage = (ImageView) findViewById(R.id.news_image);
        settingImage = (ImageView) findViewById(R.id.setting_image);
        messageText = (TextView) findViewById(R.id.message_text);
        contactsText = (TextView) findViewById(R.id.contacts_text);
        newsText = (TextView) findViewById(R.id.news_text);
        settingText = (TextView) findViewById(R.id.setting_text);
        messageLayout.setOnClickListener(this);
        contactsLayout.setOnClickListener(this);
        newsLayout.setOnClickListener(this);
        settingLayout.setOnClickListener(this);
    }

    @Override
    public void onClick(View v) {
        switch (v.getId()) {
            case R.id.message_layout:
                // ，选中第1个tab
                setTabSelection(0);
                Log.v(TAG, "qqqqqqqqqqqqqqqqqqqqq");
                break;
            case R.id.contacts_layout:
                // ，选中第2个tab
                setTabSelection(1);
                Log.v(TAG, "wwwwwwwwwwwwwwwwwwwwwwwwww");
                break;
            case R.id.news_layout:
                // ，选中第3个tab
                setTabSelection(2);
                Log.v(TAG, "eeeeeeeeeeeeeeeeeeeeeeeee");
                break;
            case R.id.setting_layout:
                // ，选中第4个tab
                setTabSelection(3);
                Log.v(TAG, "rrrrrrrrrrrrrrrrrrrrrrrr");
                break;
            default:
                break;
        }
    }

    /**
     * 根据传入的index参数来设置选中的tab页。
     *
     * @param index 每个tab页对应的下标。0表示首页，1表示外卖，2表示预订，3表示我的。
     */
    private void setTabSelection(int index) {
        // 每次选中之前先清楚掉上次的选中状态
        clearSelection();
        // 开启一个Fragment事务
        FragmentTransaction transaction = fragmentManager.beginTransaction();
        // 先隐藏掉所有的Fragment，以防止有多个Fragment显示在界面上的情况
        hideFragments(transaction);
        switch (index) {
            case 0:
                // 当点击了首页tab时，改变控件的图片和文字颜色
                messageImage.setImageResource(R.drawable.home_white);
                messageText.setTextColor(Color.parseColor("#FF0C97FF"));
                if (shoYeFragFragment == null) {
                    // 如果MessageFragment为空，则创建一个并添加到界面上
                    shoYeFragFragment = new ShoYeFrag();
                    transaction.add(R.id.content, shoYeFragFragment);
                } else {
                    // 如果MessageFragment不为空，则直接将它显示出来
                    transaction.show(shoYeFragFragment);
                }
                break;
            case 1:
                // ，改变控件的图片和文字颜色
                contactsImage.setImageResource(R.drawable.buy01);
                contactsText.setTextColor(Color.parseColor("#FF0C97FF"));
                    if (waiMaiFragFragment == null) {
                        // 如果ContactsFragment为空，则创建一个并添加到界面上
                        waiMaiFragFragment = new WaiMaiFrag();
                        transaction.add(R.id.content, waiMaiFragFragment);
                        Log.v(TAG, "fffffffffffffffffffffffffffffff");
                    } else {
                        // 如果ContactsFragment不为空，则直接将它显示出来
                        transaction.show(waiMaiFragFragment);
                    }
                break;
            case 2:
                // ，改变控件的图片和文字颜色
                newsImage.setImageResource(R.drawable.three_white);
                newsText.setTextColor(Color.parseColor("#FF0C97FF"));
                    if (yuDingFragsFragment == null) {
                        // 如果NewsFragment为空，则创建一个并添加到界面上
                        yuDingFragsFragment = new YuDingFrag();
                        transaction.add(R.id.content, yuDingFragsFragment);
                        Log.v(TAG, "bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb");
                    } else {
                        // 如果NewsFragment不为空，则直接将它显示出来
                        transaction.show(yuDingFragsFragment);
                    }
                break;
            case 3:
            default:
                // ，改变控件的图片和文字颜色
                settingImage.setImageResource(R.drawable.user);
                settingText.setTextColor(Color.parseColor("#FF0C97FF"));
                    if (woDeFragFragment == null) {
                        // 如果SettingFragment为空，则创建一个并添加到界面上
                        woDeFragFragment = new WoDeFrag();
                        transaction.add(R.id.content, woDeFragFragment);
                        Log.v(TAG, "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa");

                    } else {
                        // 如果SettingFragment不为空，则直接将它显示出来
                        transaction.show(woDeFragFragment);
                    }
                break;
        }
        transaction.commit();
    }

    /**
     * 清除掉所有的选中状态。
     */
    private void clearSelection() {
        messageImage.setImageResource(R.drawable.home_black);
        messageText.setTextColor(Color.parseColor("#82858b"));
        contactsImage.setImageResource(R.drawable.buy);
        contactsText.setTextColor(Color.parseColor("#82858b"));
        newsImage.setImageResource(R.drawable.three_black);
        newsText.setTextColor(Color.parseColor("#82858b"));
        settingImage.setImageResource(R.drawable.userr);
        settingText.setTextColor(Color.parseColor("#82858b"));
    }

    /**
     * 将所有的Fragment都置为隐藏状态。
     *
     * @param transaction 用于对Fragment执行操作的事务
     */
    private void hideFragments(FragmentTransaction transaction) {
        if (shoYeFragFragment != null) {
            transaction.hide(shoYeFragFragment);
        }
        if (waiMaiFragFragment != null) {
            transaction.hide(waiMaiFragFragment);
        }
        if (yuDingFragsFragment != null) {
            transaction.hide(yuDingFragsFragment);
        }
        if (woDeFragFragment != null) {
            transaction.hide(woDeFragFragment);
        }
    }
}